Ví dụ Reflection_(khoa_học_máy_tính)

Đoạn mã sau là ví dụ viết bằng Java.

// Không dùng reflectionFoo foo = new Foo ();foo.hello ();
// Dùng reflectionClass cl = Class.forName ("Foo");Method method = cl.getMethod ("hello", null);method.invoke (cl.newInstance (), null);

Cả hai đoạn code trên đều tạo ra một thực thể của lớp 'Foo' và gọi phương thức 'hello' của nó. Sự khác biệt là, trong đoạn đầu, các tên của lớp và phương thức thì được viết kiểu "mã cứng" (hard-coded); và nó không thể dùng tên của lớp khác. Trong đoạn mã sau, tên của lớp và phương thức có thể dễ dàng thay đổi vào thời gian thực thi. Một sự khác biệt lớn nữa là đoạn mã thứ nhì này khó hiểu hơn.

(Tham khảo java.lang.reflect.)

Đây là ví dụ tương tự với Perl:

# Không dùng reflectionFoo->new->hello;
# Dùng reflectionmy $class = "Foo";my $method = "hello";$class->new->$method;